#ifndef SHADER_LOADER_H
#define SHADER_LOADER_H

#include "Export.h"
#include "ILoader.h"
#include "ShaderBase.h"

namespace glow {

class SHARED ShaderLoader : public ILoader<ShaderBase>
{
    public:
		/**
		 *  Constructor of the ShaderLoader
		 **/
        ShaderLoader();
		
		/**
		 *  Destructor of the ShaderLoader
		 **/
        ~ShaderLoader();

		/**
		 *  Load the filename shader
		 *\param filename name of the fichier load in the ShaderLoader ("light.vert" or "light.frag")
		 *\return the ShaderBase load by the filename (VertexShader or FragmentShader)
		 **/
        virtual ShaderBase *load(const std::string &filename);

    private:

        char *loadSource(const char *filename);

        GLuint loadShader(GLenum type, const char *filename);

};

}

#endif

